package com.kykj.kykjyzw.service.impl;

import com.kykj.kykjyzw.dao.RoleDao;
import com.kykj.kykjyzw.dao.RoleMenuDao;
import com.kykj.kykjyzw.entity.RoleEntity;
import com.kykj.kykjyzw.service.RoleService;
import com.kykj.kykjyzw.vo.RoleVo;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class RoleServiceImpl implements RoleService {

    @Resource
    RoleDao roleDao;

    @Resource
    RoleMenuDao roleMenuDao;
    /**
     * 根据id获取role对象
     * @param roleid roleid
     * @return RoleEmtoty
     */
    @Override
    public RoleEntity getRoleById(int roleid) {
        return roleDao.getRoleById(roleid);
    }

    /**
     * 获取role列表
     * @param name 名称
     * @param info 备注
     * @param start 开始位置
     * @param limit 每页行数
     * @return List
     */
    @Override
    public List<RoleEntity> getRoleList(String name, String info, int start, int limit) {
        if (!name.equals("")){
            name="%"+name+"%";
        }
        if (!info.equals("")){
            info="%"+info+"%";
        }
        return roleDao.getRoleList(name, info, start, limit);
    }

    /**
     * 添加addrole
     * @param info 备注
     * @param name 名称
     * @return int
     */
    @Override
    public int addRole(String info, String name) {
        return roleDao.addRole(info, name);
    }

    /**
     * 更新role
     * @param roleVo roleVo
     * @return int
     */
    @Override
    public int updateRole(RoleVo roleVo) {
        return roleDao.updateRole(roleVo);
    }

    /**
     * 删除role
     * @param roleid roleid
     * @return int
     */
    @Override
    public int delRole(int roleid) {
            if (roleDao.delRole(roleid)>0){//删除角色成功!
                if (roleMenuDao.delRootByRoleId(roleid)>0){//删除该角色下的所有用户
                    if (roleDao.changeAllRoleIdByRoleId(roleid)>0){//当前角色下用户都改成默认用户
                        return 1;
                    }
                }
            }
        return 0;
    }

    /**
     * 修改状态
     * @param roleid roleid
     * @return int
     */
    @Override
    public int changeStatus(int roleid) {
        return roleDao.changeStatus(roleid);
    }

    /**
     * 获取role总数
     * @return int
     */
    @Override
    public int getRoleCount() {
        return roleDao.getRoleCount();
    }
}
